package lmh.exam1_1;

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.Toast;

import androidx.core.app.ActivityCompat;
import androidx.core.content.res.ResourcesCompat;

import java.io.File;
import java.io.IOException;

public class MainActivity extends Activity {
    private MediaPlayer player;                 //定义MediaPlayer对象
    private boolean isPause = false;            //定义是否暂停
    private File file;                          //定义要播放的音频文件
    public static final int EXTERNAL_STORAGE_REQ_CODE = 10;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //设置全屏显示
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        
        int permission = ActivityCompat.checkSelfPermission(this,
                Manifest.permission.READ_EXTERNAL_STORAGE);

        if (permission != PackageManager.PERMISSION_GRANTED) {
            // 请求权限
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_REQ_CODE);
        }

        final ImageButton btn_play = (ImageButton) findViewById(R.id.btn_play); //获取“播放/暂停”按钮
        final ImageButton btn_stop = (ImageButton) findViewById(R.id.btn_stop); //获取“停止”按钮

        /*访问res/raw目录下的音频文件*/
//        player = MediaPlayer.create(this, R.raw.rm);



        /*访问assets目录下的音频文件*/
//        AssetManager am = getAssets();
//        player = new MediaPlayer();
//        try {
//            AssetFileDescriptor afd = am.openFd("am.mp3");  // 注意这里的区别
//            //给MediaPlayer设置播放源
//            player.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
//            player.prepare();
//        } catch (IOException e) {
//            e.printStackTrace();
//        }

        /*访问SD卡下的音频文件*/
        file = new File("/sdcard/fm.mp3");                        //获取要播放的音频文件
        if (file.exists()) {  //如果音频文件存在就创建一个装载该文件的MediaPlayer对象，不存在将做出提示
            //创建MediaPlayer对象,并解析要播放的音频文件
            player = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));
//            player = new MediaPlayer();
//            try {
//                player.setDataSource(file.getAbsolutePath());
//                player.prepare();
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
        } else {
            //提示音频文件不存在
            Toast.makeText(MainActivity.this, "要播放的音频文件不存在！", Toast.LENGTH_SHORT).show();
            return;
        }

        //为MediaPlayer添加完成事件监听器，实现当音频播放完毕后，重新开始播放音频
        player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mp) {
                play();                               //调用play()方法，实现播放功能
            }
        });

        btn_play.setOnClickListener(new View.OnClickListener() {  //实现继续播放与暂停播放
            @Override
            public void onClick(View v) {
                if (player.isPlaying() && !isPause) {         //如果音频处于播放状态
                    player.pause();                            //暂停播放
                    isPause = true;                           //设置为暂停状态
                    //更换为播放图标
                    ((ImageButton) v).setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.play, null));
                } else {
                    player.start();                           //继续播放
                    // 更换为暂停图标
                    ((ImageButton) v).setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.pause, null));
                    isPause = false;                         //设置为播放状态
                }
            }
        });

        btn_stop.setOnClickListener(new View.OnClickListener() { //单击停止按钮，实现停止播放音频
            @Override
            public void onClick(View v) {
                player.stop();                    //停止播放
                //在stop()方法之后先调用一下prepare()方法，然后再播放
                try {
                    player.prepare();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                player.seekTo(0);
                //更换为播放图标
                btn_play.setImageDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.play, null));
            }
        });
    }

    private void play() {  //创建play()，实现音频播放功能
        try {
            player.reset();                                         //重置MediaPlayer对象
            player.setDataSource(file.getAbsolutePath());          //重新设置要播放的音频
            player.prepare();                                     //预加载音频
            player.start();                                         //开始播放
        } catch (Exception e) {
            e.printStackTrace();                                    //输出异常信息
        }
    }


    @Override
    protected void onDestroy() {                //当前Activity销毁时,停止正在播放的音频,并释放MediaPlayer所占用的资源
        if (player.isPlaying()) {               //如果音频处于播放状态
            player.stop();                      //停止音频的播放
        }
        player.release();                       //释放资源
        super.onDestroy();
    }

}
